Autogenerated HTML docs for v1.7.6-178-g55272
diff --git a/config.txt b/config.txt index c631d1c..b56959b 100644 --- a/config.txt +++ b/config.txt
@@ -676,7 +676,7 @@ browser.<tool>.cmd:: Specify the command to invoke the specified browser. The specified command is evaluated in shell with the URLs passed - as arguments. (See linkgit:git-web--browse[1].) + as arguments. (See linkgit:git-web{litdd}browse[1].) browser.<tool>.path:: Override the path for the given tool that may be used to
diff --git a/git-check-ref-format.html b/git-check-ref-format.html index 52ee5a0..ed6f784 100644 --- a/git-check-ref-format.html +++ b/git-check-ref-format.html
@@ -426,10 +426,12 @@ <div class="paragraph"><p>Checks if a given <em>refname</em> is acceptable, and exits with a non-zero status if it is not.</p></div> <div class="paragraph"><p>A reference is used in git to specify branches and tags. A -branch head is stored under the <tt>$GIT_DIR/refs/heads</tt> directory, and -a tag is stored under the <tt>$GIT_DIR/refs/tags</tt> directory (or, if refs -are packed by <tt>git gc</tt>, as entries in the <tt>$GIT_DIR/packed-refs</tt> file). -git imposes the following rules on how references are named:</p></div> +branch head is stored in the <tt>refs/heads</tt> hierarchy, while +a tag is stored in the <tt>refs/tags</tt> hierarchy of the ref namespace +(typically in <tt>$GIT_DIR/refs/heads</tt> and <tt>$GIT_DIR/refs/tags</tt> +directories or, as entries in file <tt>$GIT_DIR/packed-refs</tt> +if refs are packed by <tt>git gc</tt>).</p></div> +<div class="paragraph"><p>git imposes the following rules on how references are named:</p></div> <div class="olist arabic"><ol class="arabic"> <li> <p> @@ -550,7 +552,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2010-11-06 00:41:57 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-check-ref-format.txt b/git-check-ref-format.txt index 205d83d..c9fdf84 100644 --- a/git-check-ref-format.txt +++ b/git-check-ref-format.txt
@@ -18,9 +18,12 @@ status if it is not. A reference is used in git to specify branches and tags. A -branch head is stored under the `$GIT_DIR/refs/heads` directory, and -a tag is stored under the `$GIT_DIR/refs/tags` directory (or, if refs -are packed by `git gc`, as entries in the `$GIT_DIR/packed-refs` file). +branch head is stored in the `refs/heads` hierarchy, while +a tag is stored in the `refs/tags` hierarchy of the ref namespace +(typically in `$GIT_DIR/refs/heads` and `$GIT_DIR/refs/tags` +directories or, as entries in file `$GIT_DIR/packed-refs` +if refs are packed by `git gc`). + git imposes the following rules on how references are named: . They can include slash `/` for hierarchical (directory)
diff --git a/git-commit.html b/git-commit.html index e44f205..e597767 100644 --- a/git-commit.html +++ b/git-commit.html
@@ -949,7 +949,7 @@ your working tree are temporarily stored to a staging area called the "index" with <em>git add</em>. A file can be reverted back, only in the index but not in the working tree, -to that of the last commit with <tt>git reset HEAD — <file></tt>, +to that of the last commit with <tt>git reset HEAD -- <file></tt>, which effectively reverts <em>git add</em> and prevents the changes to this file from participating in the next commit. After building the state to be committed incrementally with these commands, @@ -1134,7 +1134,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-05-17 06:42:42 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-commit.txt b/git-commit.txt index 7951cb7..5cc84a1 100644 --- a/git-commit.txt +++ b/git-commit.txt
@@ -284,7 +284,7 @@ your working tree are temporarily stored to a staging area called the "index" with 'git add'. A file can be reverted back, only in the index but not in the working tree, -to that of the last commit with `git reset HEAD -- <file>`, +to that of the last commit with `git reset HEAD \-- <file>`, which effectively reverts 'git add' and prevents the changes to this file from participating in the next commit. After building the state to be committed incrementally with these commands,
diff --git a/git-config.html b/git-config.html index 6918319..ae11b16 100644 --- a/git-config.html +++ b/git-config.html
@@ -1839,7 +1839,7 @@ <p> Specify the command to invoke the specified browser. The specified command is evaluated in shell with the URLs passed - as arguments. (See <a href="git-web—browse.html">git-web—browse(1)</a>.) + as arguments. (See <a href="git-web--browse.html">git-web--browse(1)</a>.) </p> </dd> <dt class="hdlist1">
diff --git a/git-log.html b/git-log.html index 66f5838..09f8cd1 100644 --- a/git-log.html +++ b/git-log.html
@@ -986,7 +986,7 @@ \ / / / / `-------------'</tt></pre> </div></div> -<div class="paragraph"><p>The horizontal line of history A—P is taken to be the first parent of +<div class="paragraph"><p>The horizontal line of history A---P is taken to be the first parent of each merge. The commits are:</p></div> <div class="ulist"><ul> <li>
diff --git a/git-mergetool--lib.html b/git-mergetool--lib.html index ceef497..40a978c 100644 --- a/git-mergetool--lib.html +++ b/git-mergetool--lib.html
@@ -414,7 +414,7 @@ </div> <h2 id="_synopsis">SYNOPSIS</h2> <div class="sectionbody"> -<div class="paragraph"><p><em>TOOL_MODE=(diff|merge) . "$(git --exec-path)/git-mergetool—lib"</em></p></div> +<div class="paragraph"><p><em>TOOL_MODE=(diff|merge) . "$(git --exec-path)/git-mergetool--lib"</em></p></div> </div> <h2 id="_description">DESCRIPTION</h2> <div class="sectionbody"> @@ -474,7 +474,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-03-15 23:30:14 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-mergetool--lib.txt b/git-mergetool--lib.txt index 63edede..5b0d51f 100644 --- a/git-mergetool--lib.txt +++ b/git-mergetool--lib.txt
@@ -7,7 +7,7 @@ SYNOPSIS -------- -'TOOL_MODE=(diff|merge) . "$(git --exec-path)/git-mergetool--lib"' +'TOOL_MODE=(diff|merge) . "$(git --exec-path)/git-mergetool{litdd}lib"' DESCRIPTION -----------
diff --git a/git-remote.html b/git-remote.html index 4553527..55f2f3a 100644 --- a/git-remote.html +++ b/git-remote.html
@@ -473,10 +473,10 @@ the remote repository.</p></div> <div class="paragraph"><p>With <tt>-t <branch></tt> option, instead of the default glob refspec for the remote to track all branches under -<tt>$GIT_DIR/remotes/<name>/</tt>, a refspec to track only <tt><branch></tt> +the <tt>refs/remotes/<name>/</tt> namespace, a refspec to track only <tt><branch></tt> is created. You can give more than one <tt>-t <branch></tt> to track multiple branches without grabbing all branches.</p></div> -<div class="paragraph"><p>With <tt>-m <master></tt> option, <tt>$GIT_DIR/remotes/<name>/HEAD</tt> is set +<div class="paragraph"><p>With <tt>-m <master></tt> option, a symbolic-ref <tt>refs/remotes/<name>/HEAD</tt> is set up to point at remote’s <tt><master></tt> branch. See also the set-head command.</p></div> <div class="paragraph"><p>When a fetch mirror is created with <tt>--mirror=fetch</tt>, the refs will not be stored in the <em>refs/remotes/</em> namespace, but rather everything in @@ -512,22 +512,23 @@ </dt> <dd> <p> -Sets or deletes the default branch (<tt>$GIT_DIR/remotes/<name>/HEAD</tt>) for +Sets or deletes the default branch (i.e. the target of the +symbolic-ref <tt>refs/remotes/<name>/HEAD</tt>) for the named remote. Having a default branch for a remote is not required, but allows the name of the remote to be specified in lieu of a specific branch. For example, if the default branch for <tt>origin</tt> is set to <tt>master</tt>, then <tt>origin</tt> may be specified wherever you would normally specify <tt>origin/master</tt>. </p> -<div class="paragraph"><p>With <tt>-d</tt>, <tt>$GIT_DIR/remotes/<name>/HEAD</tt> is deleted.</p></div> -<div class="paragraph"><p>With <tt>-a</tt>, the remote is queried to determine its <tt>HEAD</tt>, then -<tt>$GIT_DIR/remotes/<name>/HEAD</tt> is set to the same branch. e.g., if the remote +<div class="paragraph"><p>With <tt>-d</tt>, the symbolic ref <tt>refs/remotes/<name>/HEAD</tt> is deleted.</p></div> +<div class="paragraph"><p>With <tt>-a</tt>, the remote is queried to determine its <tt>HEAD</tt>, then the +symbolic-ref <tt>refs/remotes/<name>/HEAD</tt> is set to the same branch. e.g., if the remote <tt>HEAD</tt> is pointed at <tt>next</tt>, "<tt>git remote set-head origin -a</tt>" will set -<tt>$GIT_DIR/refs/remotes/origin/HEAD</tt> to <tt>refs/remotes/origin/next</tt>. This will +the symbolic-ref <tt>refs/remotes/origin/HEAD</tt> to <tt>refs/remotes/origin/next</tt>. This will only work if <tt>refs/remotes/origin/next</tt> already exists; if not it must be fetched first.</p></div> -<div class="paragraph"><p>Use <tt><branch></tt> to set <tt>$GIT_DIR/remotes/<name>/HEAD</tt> explicitly. e.g., "git -remote set-head origin master" will set <tt>$GIT_DIR/refs/remotes/origin/HEAD</tt> to +<div class="paragraph"><p>Use <tt><branch></tt> to set the symbolic-ref <tt>refs/remotes/<name>/HEAD</tt> explicitly. e.g., "git +remote set-head origin master" will set the symbolic-ref <tt>refs/remotes/origin/HEAD</tt> to <tt>refs/remotes/origin/master</tt>. This will only work if <tt>refs/remotes/origin/master</tt> already exists; if not it must be fetched first.</p></div> </dd> @@ -659,7 +660,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-04-06 19:53:11 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-remote.txt b/git-remote.txt index 528f34a..5a8c506 100644 --- a/git-remote.txt +++ b/git-remote.txt
@@ -60,11 +60,11 @@ + With `-t <branch>` option, instead of the default glob refspec for the remote to track all branches under -`$GIT_DIR/remotes/<name>/`, a refspec to track only `<branch>` +the `refs/remotes/<name>/` namespace, a refspec to track only `<branch>` is created. You can give more than one `-t <branch>` to track multiple branches without grabbing all branches. + -With `-m <master>` option, `$GIT_DIR/remotes/<name>/HEAD` is set +With `-m <master>` option, a symbolic-ref `refs/remotes/<name>/HEAD` is set up to point at remote's `<master>` branch. See also the set-head command. + When a fetch mirror is created with `\--mirror=fetch`, the refs will not @@ -92,24 +92,25 @@ 'set-head':: -Sets or deletes the default branch (`$GIT_DIR/remotes/<name>/HEAD`) for +Sets or deletes the default branch (i.e. the target of the +symbolic-ref `refs/remotes/<name>/HEAD`) for the named remote. Having a default branch for a remote is not required, but allows the name of the remote to be specified in lieu of a specific branch. For example, if the default branch for `origin` is set to `master`, then `origin` may be specified wherever you would normally specify `origin/master`. + -With `-d`, `$GIT_DIR/remotes/<name>/HEAD` is deleted. +With `-d`, the symbolic ref `refs/remotes/<name>/HEAD` is deleted. + -With `-a`, the remote is queried to determine its `HEAD`, then -`$GIT_DIR/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote +With `-a`, the remote is queried to determine its `HEAD`, then the +symbolic-ref `refs/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote `HEAD` is pointed at `next`, "`git remote set-head origin -a`" will set -`$GIT_DIR/refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will +the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will only work if `refs/remotes/origin/next` already exists; if not it must be fetched first. + -Use `<branch>` to set `$GIT_DIR/remotes/<name>/HEAD` explicitly. e.g., "git -remote set-head origin master" will set `$GIT_DIR/refs/remotes/origin/HEAD` to +Use `<branch>` to set the symbolic-ref `refs/remotes/<name>/HEAD` explicitly. e.g., "git +remote set-head origin master" will set the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/master`. This will only work if `refs/remotes/origin/master` already exists; if not it must be fetched first. +
diff --git a/git-rev-list.html b/git-rev-list.html index fe647b3..6486214 100644 --- a/git-rev-list.html +++ b/git-rev-list.html
@@ -987,7 +987,7 @@ \ / / / / `-------------'</tt></pre> </div></div> -<div class="paragraph"><p>The horizontal line of history A—P is taken to be the first parent of +<div class="paragraph"><p>The horizontal line of history A---P is taken to be the first parent of each merge. The commits are:</p></div> <div class="ulist"><ul> <li>
diff --git a/git-revert.html b/git-revert.html index 6a59601..01a60ca 100644 --- a/git-revert.html +++ b/git-revert.html
@@ -428,7 +428,7 @@ should see <a href="git-reset.html">git-reset(1)</a>, particularly the <em>--hard</em> option. If you want to extract specific files as they were in another commit, you should see <a href="git-checkout.html">git-checkout(1)</a>, specifically the <tt>git checkout -<commit> — <filename></tt> syntax. Take care with these alternatives as +<commit> -- <filename></tt> syntax. Take care with these alternatives as both will discard uncommitted changes in your working directory.</p></div> </div> <h2 id="_options">OPTIONS</h2> @@ -581,7 +581,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-03-15 23:30:14 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-revert.txt b/git-revert.txt index ac10cfb..6a21b37 100644 --- a/git-revert.txt +++ b/git-revert.txt
@@ -23,7 +23,7 @@ should see linkgit:git-reset[1], particularly the '--hard' option. If you want to extract specific files as they were in another commit, you should see linkgit:git-checkout[1], specifically the `git checkout -<commit> -- <filename>` syntax. Take care with these alternatives as +<commit> \-- <filename>` syntax. Take care with these alternatives as both will discard uncommitted changes in your working directory. OPTIONS
diff --git a/git-sh-i18n--envsubst.html b/git-sh-i18n--envsubst.html index 886d396..8dc9215 100644 --- a/git-sh-i18n--envsubst.html +++ b/git-sh-i18n--envsubst.html
@@ -4,7 +4,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="generator" content="AsciiDoc 8.4.5" /> -<title>git-sh-i18n—envsubst(1)</title> +<title>git-sh-i18n--envsubst(1)</title> <style type="text/css"> /* Debug borders */ p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { @@ -403,7 +403,7 @@ <body> <div id="header"> <h1> -git-sh-i18n—envsubst(1) Manual Page +git-sh-i18n--envsubst(1) Manual Page </h1> <h2>NAME</h2> <div class="sectionbody"> @@ -417,8 +417,8 @@ <div class="verseblock"> <div class="verseblock-content">eval_gettext () { printf "%s" "$1" | ( - export PATH $(<em>git sh-i18n—envsubst</em> --variables "$1"); - <em>git sh-i18n—envsubst</em> "$1" + export PATH $(<em>git sh-i18n--envsubst</em> --variables "$1"); + <em>git sh-i18n--envsubst</em> "$1" ) }</div> <div class="verseblock-attribution"> @@ -429,7 +429,7 @@ <div class="paragraph"><p>This is not a command the end user would want to run. Ever. This documentation is meant for people who are studying the plumbing scripts and/or are writing new ones.</p></div> -<div class="paragraph"><p>git-sh-i18n—envsubst is Git’s stripped-down copy of the GNU +<div class="paragraph"><p><em>git sh-i18n--envsubst</em> is Git’s stripped-down copy of the GNU <tt>envsubst(1)</tt> program that comes with the GNU gettext package. It’s used internally by <a href="git-sh-i18n.html">git-sh-i18n(1)</a> to interpolate the variables passed to the the <tt>eval_gettext</tt> function.</p></div> @@ -443,7 +443,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-05-31 19:53:01 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-sh-i18n--envsubst.txt b/git-sh-i18n--envsubst.txt index 61e4c08..5c3ec32 100644 --- a/git-sh-i18n--envsubst.txt +++ b/git-sh-i18n--envsubst.txt
@@ -1,5 +1,5 @@ -git-sh-i18n--envsubst(1) -======================== +git-sh-i18n{litdd}envsubst(1) +============================= NAME ---- @@ -10,8 +10,8 @@ [verse] eval_gettext () { printf "%s" "$1" | ( - export PATH $('git sh-i18n--envsubst' --variables "$1"); - 'git sh-i18n--envsubst' "$1" + export PATH $('git sh-i18n{litdd}envsubst' --variables "$1"); + 'git sh-i18n{litdd}envsubst' "$1" ) } @@ -22,7 +22,7 @@ This documentation is meant for people who are studying the plumbing scripts and/or are writing new ones. -git-sh-i18n--envsubst is Git's stripped-down copy of the GNU +'git sh-i18n{litdd}envsubst' is Git's stripped-down copy of the GNU `envsubst(1)` program that comes with the GNU gettext package. It's used internally by linkgit:git-sh-i18n[1] to interpolate the variables passed to the the `eval_gettext` function.
diff --git a/git-sh-i18n.html b/git-sh-i18n.html index 07a9aab..b03f451 100644 --- a/git-sh-i18n.html +++ b/git-sh-i18n.html
@@ -448,7 +448,7 @@ <p> Currently a dummy fall-through function implemented as a wrapper around <tt>printf(1)</tt> with variables expanded by the - <a href="git-sh-i18n—envsubst.html">git-sh-i18n—envsubst(1)</a> helper. Will be replaced by a + <a href="git-sh-i18n--envsubst.html">git-sh-i18n--envsubst(1)</a> helper. Will be replaced by a real gettext implementation in a later version. </p> </dd> @@ -460,7 +460,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-05-23 23:05:02 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-sh-i18n.txt b/git-sh-i18n.txt index 3b1f7ac..eca69e3 100644 --- a/git-sh-i18n.txt +++ b/git-sh-i18n.txt
@@ -34,7 +34,7 @@ eval_gettext:: Currently a dummy fall-through function implemented as a wrapper around `printf(1)` with variables expanded by the - linkgit:git-sh-i18n--envsubst[1] helper. Will be replaced by a + linkgit:git-sh-i18n{litdd}envsubst[1] helper. Will be replaced by a real gettext implementation in a later version. GIT
diff --git a/git-submodule.html b/git-submodule.html index 8b114b5..c4f4350 100644 --- a/git-submodule.html +++ b/git-submodule.html
@@ -602,7 +602,7 @@ repositories accordingly. </p> <div class="paragraph"><p>"git submodule sync" synchronizes all submodules while -"git submodule sync — A" synchronizes submodule "A" only.</p></div> +"git submodule sync -- A" synchronizes submodule "A" only.</p></div> </dd> </dl></div> </div> @@ -770,7 +770,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-05-03 00:48:04 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-submodule.txt b/git-submodule.txt index 5e7a413..12af4de 100644 --- a/git-submodule.txt +++ b/git-submodule.txt
@@ -172,7 +172,7 @@ repositories accordingly. + "git submodule sync" synchronizes all submodules while -"git submodule sync -- A" synchronizes submodule "A" only. +"git submodule sync \-- A" synchronizes submodule "A" only. OPTIONS -------
diff --git a/git-web--browse.html b/git-web--browse.html index ec3dd51..8fd7c04 100644 --- a/git-web--browse.html +++ b/git-web--browse.html
@@ -551,7 +551,7 @@ <div class="paragraph"><p>You can explicitly provide a full path to your preferred browser by setting the configuration variable <em>browser.<tool>.path</em>. For example, you can configure the absolute path to firefox by setting -<em>browser.firefox.path</em>. Otherwise, <em>git web—browse</em> assumes the tool +<em>browser.firefox.path</em>. Otherwise, <em>git web--browse</em> assumes the tool is available in PATH.</p></div> <h3 id="_browser_lt_tool_gt_cmd">browser.<tool>.cmd</h3><div style="clear:left"></div> <div class="paragraph"><p>When the browser, specified by options or configuration variables, is @@ -595,7 +595,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-03-15 23:30:14 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git-web--browse.txt b/git-web--browse.txt index 69d92fa..9b0d1fe 100644 --- a/git-web--browse.txt +++ b/git-web--browse.txt
@@ -68,7 +68,7 @@ You can explicitly provide a full path to your preferred browser by setting the configuration variable 'browser.<tool>.path'. For example, you can configure the absolute path to firefox by setting -'browser.firefox.path'. Otherwise, 'git web--browse' assumes the tool +'browser.firefox.path'. Otherwise, 'git web{litdd}browse' assumes the tool is available in PATH. browser.<tool>.cmd
diff --git a/git.html b/git.html index e5eebab..5ad666a 100644 --- a/git.html +++ b/git.html
@@ -1827,8 +1827,7 @@ </dt> <dd> <p> - indicates the head of the current branch (i.e. the - contents of <tt>$GIT_DIR/HEAD</tt>). + indicates the head of the current branch. </p> </dd> <dt class="hdlist1"> @@ -1837,7 +1836,7 @@ <dd> <p> a valid tag <em>name</em> - (i.e. the contents of <tt>$GIT_DIR/refs/tags/<tag></tt>). + (i.e. a <tt>refs/tags/<tag></tt> reference). </p> </dd> <dt class="hdlist1"> @@ -1846,7 +1845,7 @@ <dd> <p> a valid head <em>name</em> - (i.e. the contents of <tt>$GIT_DIR/refs/heads/<head></tt>). + (i.e. a <tt>refs/heads/<head></tt> reference). </p> </dd> </dl></div> @@ -2210,7 +2209,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2011-06-26 22:38:07 UTC +Last updated 2011-07-13 23:50:41 UTC </div> </div> </body>
diff --git a/git.txt b/git.txt index 3c7a832..0172cd7 100644 --- a/git.txt +++ b/git.txt
@@ -523,16 +523,15 @@ symbolic notation: HEAD:: - indicates the head of the current branch (i.e. the - contents of `$GIT_DIR/HEAD`). + indicates the head of the current branch. <tag>:: a valid tag 'name' - (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`). + (i.e. a `refs/tags/<tag>` reference). <head>:: a valid head 'name' - (i.e. the contents of `$GIT_DIR/refs/heads/<head>`). + (i.e. a `refs/heads/<head>` reference). For a more complete list of ways to spell object names, see "SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
diff --git a/gitglossary.html b/gitglossary.html index 1383355..46bafec 100644 --- a/gitglossary.html +++ b/gitglossary.html
@@ -720,8 +720,8 @@ <dd> <p> A <a href="#def_ref">named reference</a> to the <a href="#def_commit">commit</a> at the tip of a - <a href="#def_branch">branch</a>. Heads are stored in - <tt>$GIT_DIR/refs/heads/</tt>, except when using packed refs. (See + <a href="#def_branch">branch</a>. Heads are stored in a file in + <tt>$GIT_DIR/refs/heads/</tt> directory, except when using packed refs. (See <a href="git-pack-refs.html">git-pack-refs(1)</a>.) </p> </dd> @@ -733,8 +733,8 @@ The current <a href="#def_branch">branch</a>. In more detail: Your <a href="#def_working_tree">working tree</a> is normally derived from the state of the tree referred to by HEAD. HEAD is a reference to one of the <a href="#def_head">heads</a> in your repository, except when using a - <a href="#def_detached_HEAD">detached HEAD</a>, in which case it may - reference an arbitrary commit. + <a href="#def_detached_HEAD">detached HEAD</a>, in which case it directly + references an arbitrary commit. </p> </dd> <dt class="hdlist1"> @@ -1079,8 +1079,9 @@ <dd> <p> A 40-byte hex representation of a <a href="#def_SHA1">SHA1</a> or a name that - denotes a particular <a href="#def_object">object</a>. These may be stored in - <tt>$GIT_DIR/refs/</tt>. + denotes a particular <a href="#def_object">object</a>. They may be stored in + a file under <tt>$GIT_DIR/refs/</tt> directory, or + in the <tt>$GIT_DIR/packed-refs</tt> file. </p> </dd> <dt class="hdlist1"> @@ -1215,14 +1216,14 @@ </dt> <dd> <p> - A <a href="#def_ref">ref</a> pointing to a <a href="#def_tag_object">tag</a> or - <a href="#def_commit_object">commit object</a>. In contrast to a <a href="#def_head">head</a>, - a tag is not changed by a <a href="#def_commit">commit</a>. Tags (not - <a href="#def_tag_object">tag objects</a>) are stored in <tt>$GIT_DIR/refs/tags/</tt>. A - git tag has nothing to do with a Lisp tag (which would be - called an <a href="#def_object_type">object type</a> in git’s context). A - tag is most typically used to mark a particular point in the - commit ancestry <a href="#def_chain">chain</a>. + A <a href="#def_ref">ref</a> under <tt>refs/tags/</tt> namespace that points to an + object of an arbitrary type (typically a tag points to either a + <a href="#def_tag_object">tag</a> or a <a href="#def_commit_object">commit object</a>). + In contrast to a <a href="#def_head">head</a>, a tag is not updated by + the <tt>commit</tt> command. A git tag has nothing to do with a Lisp + tag (which would be called an <a href="#def_object_type">object type</a> + in git’s context). A tag is most typically used to mark a particular + point in the commit ancestry <a href="#def_chain">chain</a>. </p> </dd> <dt class="hdlist1">
diff --git a/glossary-content.txt b/glossary-content.txt index 8f62d1a..3595b58 100644 --- a/glossary-content.txt +++ b/glossary-content.txt
@@ -161,8 +161,8 @@ [[def_head]]head:: A <<def_ref,named reference>> to the <<def_commit,commit>> at the tip of a - <<def_branch,branch>>. Heads are stored in - `$GIT_DIR/refs/heads/`, except when using packed refs. (See + <<def_branch,branch>>. Heads are stored in a file in + `$GIT_DIR/refs/heads/` directory, except when using packed refs. (See linkgit:git-pack-refs[1].) [[def_HEAD]]HEAD:: @@ -170,8 +170,8 @@ working tree>> is normally derived from the state of the tree referred to by HEAD. HEAD is a reference to one of the <<def_head,heads>> in your repository, except when using a - <<def_detached_HEAD,detached HEAD>>, in which case it may - reference an arbitrary commit. + <<def_detached_HEAD,detached HEAD>>, in which case it directly + references an arbitrary commit. [[def_head_ref]]head ref:: A synonym for <<def_head,head>>. @@ -382,8 +382,9 @@ [[def_ref]]ref:: A 40-byte hex representation of a <<def_SHA1,SHA1>> or a name that - denotes a particular <<def_object,object>>. These may be stored in - `$GIT_DIR/refs/`. + denotes a particular <<def_object,object>>. They may be stored in + a file under `$GIT_DIR/refs/` directory, or + in the `$GIT_DIR/packed-refs` file. [[def_reflog]]reflog:: A reflog shows the local "history" of a ref. In other words, @@ -459,14 +460,14 @@ command. [[def_tag]]tag:: - A <<def_ref,ref>> pointing to a <<def_tag_object,tag>> or - <<def_commit_object,commit object>>. In contrast to a <<def_head,head>>, - a tag is not changed by a <<def_commit,commit>>. Tags (not - <<def_tag_object,tag objects>>) are stored in `$GIT_DIR/refs/tags/`. A - git tag has nothing to do with a Lisp tag (which would be - called an <<def_object_type,object type>> in git's context). A - tag is most typically used to mark a particular point in the - commit ancestry <<def_chain,chain>>. + A <<def_ref,ref>> under `refs/tags/` namespace that points to an + object of an arbitrary type (typically a tag points to either a + <<def_tag_object,tag>> or a <<def_commit_object,commit object>>). + In contrast to a <<def_head,head>>, a tag is not updated by + the `commit` command. A git tag has nothing to do with a Lisp + tag (which would be called an <<def_object_type,object type>> + in git's context). A tag is most typically used to mark a particular + point in the commit ancestry <<def_chain,chain>>. [[def_tag_object]]tag object:: An <<def_object,object>> containing a <<def_ref,ref>> pointing to
diff --git a/rev-list-options.txt b/rev-list-options.txt index 7e7ba68..554ab8c 100644 --- a/rev-list-options.txt +++ b/rev-list-options.txt
@@ -313,7 +313,7 @@ \ / / / / `-------------' ----------------------------------------------------------------------- -The horizontal line of history A--P is taken to be the first parent of +The horizontal line of history A---P is taken to be the first parent of each merge. The commits are: * `I` is the initial commit, in which `foo` exists with contents
diff --git a/technical/pack-protocol.txt b/technical/pack-protocol.txt index 369f91d..a7004c6 100644 --- a/technical/pack-protocol.txt +++ b/technical/pack-protocol.txt
@@ -179,34 +179,36 @@ Packfile Negotiation -------------------- -After reference and capabilities discovery, the client can decide -to terminate the connection by sending a flush-pkt, telling the -server it can now gracefully terminate (as happens with the ls-remote -command) or it can enter the negotiation phase, where the client and -server determine what the minimal packfile necessary for transport is. +After reference and capabilities discovery, the client can decide to +terminate the connection by sending a flush-pkt, telling the server it can +now gracefully terminate, and disconnect, when it does not need any pack +data. This can happen with the ls-remote command, and also can happen when +the client already is up-to-date. -Once the client has the initial list of references that the server -has, as well as the list of capabilities, it will begin telling the -server what objects it wants and what objects it has, so the server -can make a packfile that only contains the objects that the client needs. -The client will also send a list of the capabilities it wants to be in -effect, out of what the server said it could do with the first 'want' line. +Otherwise, it enters the negotiation phase, where the client and +server determine what the minimal packfile necessary for transport is, +by telling the server what objects it wants, its shallow objects +(if any), and the maximum commit depth it wants (if any). The client +will also send a list of the capabilities it wants to be in effect, +out of what the server said it could do with the first 'want' line. ---- upload-request = want-list - have-list - compute-end + *shallow-line + *1depth-request + flush-pkt want-list = first-want *additional-want - flush-pkt + + shallow-line = PKT_LINE("shallow" SP obj-id) + + depth-request = PKT_LINE("deepen" SP depth) first-want = PKT-LINE("want" SP obj-id SP capability-list LF) additional-want = PKT-LINE("want" SP obj-id LF) - have-list = *have-line - have-line = PKT-LINE("have" SP obj-id LF) - compute-end = flush-pkt / PKT-LINE("done") + depth = 1*DIGIT ---- Clients MUST send all the obj-ids it wants from the reference @@ -215,21 +217,64 @@ obj-id in a 'want' command which did not appear in the response obtained through ref discovery. -If client is requesting a shallow clone, it will now send a 'deepen' -line with the depth it is requesting. +The client MUST write all obj-ids which it only has shallow copies +of (meaning that it does not have the parents of a commit) as +'shallow' lines so that the server is aware of the limitations of +the client's history. Clients MUST NOT mention an obj-id which +it does not know exists on the server. -Once all the "want"s (and optional 'deepen') are transferred, -clients MUST send a flush-pkt. If the client has all the references -on the server, client flushes and disconnects. +The client now sends the maximum commit history depth it wants for +this transaction, which is the number of commits it wants from the +tip of the history, if any, as a 'deepen' line. A depth of 0 is the +same as not making a depth request. The client does not want to receive +any commits beyond this depth, nor objects needed only to complete +those commits. Commits whose parents are not received as a result are +defined as shallow and marked as such in the server. This information +is sent back to the client in the next step. -TODO: shallow/unshallow response and document the deepen command in the ABNF. +Once all the 'want's and 'shallow's (and optional 'deepen') are +transferred, clients MUST send a flush-pkt, to tell the server side +that it is done sending the list. + +Otherwise, if the client sent a positive depth request, the server +will determine which commits will and will not be shallow and +send this information to the client. If the client did not request +a positive depth, this step is skipped. + +---- + shallow-update = *shallow-line + *unshallow-line + flush-pkt + + shallow-line = PKT-LINE("shallow" SP obj-id) + + unshallow-line = PKT-LINE("unshallow" SP obj-id) +---- + +If the client has requested a positive depth, the server will compute +the set of commits which are no deeper than the desired depth, starting +at the client's wants. The server writes 'shallow' lines for each +commit whose parents will not be sent as a result. The server writes +an 'unshallow' line for each commit which the client has indicated is +shallow, but is no longer shallow at the currently requested depth +(that is, its parents will now be sent). The server MUST NOT mark +as unshallow anything which the client has not indicated was shallow. Now the client will send a list of the obj-ids it has using 'have' -lines. In multi_ack mode, the canonical implementation will send up -to 32 of these at a time, then will send a flush-pkt. The canonical -implementation will skip ahead and send the next 32 immediately, -so that there is always a block of 32 "in-flight on the wire" at a -time. +lines, so the server can make a packfile that only contains the objects +that the client needs. In multi_ack mode, the canonical implementation +will send up to 32 of these at a time, then will send a flush-pkt. The +canonical implementation will skip ahead and send the next 32 immediately, +so that there is always a block of 32 "in-flight on the wire" at a time. + +---- + upload-haves = have-list + compute-end + + have-list = *have-line + have-line = PKT-LINE("have" SP obj-id LF) + compute-end = flush-pkt / PKT-LINE("done") +---- If the server reads 'have' lines, it then will respond by ACKing any of the obj-ids the client said it had that the server also has. The
diff --git a/user-manual.html b/user-manual.html index b20ba21..d2dfd35 100644 --- a/user-manual.html +++ b/user-manual.html
@@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User’s Manual (for version 1.5.3 or newer)</title><link rel="stylesheet" href="docbook-xsl.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book" title="Git User’s Manual (for version 1.5.3 or newer)"><div class="titlepage"><div><div><h1 class="title"><a name="id521529"></a>Git User’s Manual (for version 1.5.3 or newer)</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#id521456"></a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a git repository via the git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via http</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#_pitfalls_with_submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt></dl></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a name="id521456"></a></h2></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User’s Manual (for version 1.5.3 or newer)</title><link rel="stylesheet" href="docbook-xsl.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book" title="Git User’s Manual (for version 1.5.3 or newer)"><div class="titlepage"><div><div><h1 class="title"><a name="id275974"></a>Git User’s Manual (for version 1.5.3 or newer)</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#id275900"></a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a git repository via the git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via http</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#_pitfalls_with_submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt></dl></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a name="id275900"></a></h2></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX command-line skills, but no previous knowledge of git.</p><p><a class="xref" href="#repositories-and-branches" title="Chapter 1. Repositories and Branches">Chapter 1, <i>Repositories and Branches</i></a> and <a class="xref" href="#exploring-git-history" title="Chapter 2. Exploring git history">Chapter 2, <i>Exploring git history</i></a> explain how to fetch and study a project using git—read these chapters to learn how to build and test a particular version of a software project, search for @@ -2081,8 +2081,8 @@ <a name="def_head"></a>head </span></dt><dd> A <a class="link" href="#def_ref">named reference</a> to the <a class="link" href="#def_commit">commit</a> at the tip of a - <a class="link" href="#def_branch">branch</a>. Heads are stored in - <code class="literal">$GIT_DIR/refs/heads/</code>, except when using packed refs. (See + <a class="link" href="#def_branch">branch</a>. Heads are stored in a file in + <code class="literal">$GIT_DIR/refs/heads/</code> directory, except when using packed refs. (See <a class="ulink" href="git-pack-refs.html" target="_top">git-pack-refs(1)</a>.) </dd><dt><span class="term"> <a name="def_HEAD"></a>HEAD @@ -2090,8 +2090,8 @@ The current <a class="link" href="#def_branch">branch</a>. In more detail: Your <a class="link" href="#def_working_tree">working tree</a> is normally derived from the state of the tree referred to by HEAD. HEAD is a reference to one of the <a class="link" href="#def_head">heads</a> in your repository, except when using a - <a class="link" href="#def_detached_HEAD">detached HEAD</a>, in which case it may - reference an arbitrary commit. + <a class="link" href="#def_detached_HEAD">detached HEAD</a>, in which case it directly + references an arbitrary commit. </dd><dt><span class="term"> <a name="def_head_ref"></a>head ref </span></dt><dd> @@ -2311,8 +2311,9 @@ <a name="def_ref"></a>ref </span></dt><dd> A 40-byte hex representation of a <a class="link" href="#def_SHA1">SHA1</a> or a name that - denotes a particular <a class="link" href="#def_object">object</a>. These may be stored in - <code class="literal">$GIT_DIR/refs/</code>. + denotes a particular <a class="link" href="#def_object">object</a>. They may be stored in + a file under <code class="literal">$GIT_DIR/refs/</code> directory, or + in the <code class="literal">$GIT_DIR/packed-refs</code> file. </dd><dt><span class="term"> <a name="def_reflog"></a>reflog </span></dt><dd> @@ -2399,14 +2400,14 @@ </dd><dt><span class="term"> <a name="def_tag"></a>tag </span></dt><dd> - A <a class="link" href="#def_ref">ref</a> pointing to a <a class="link" href="#def_tag_object">tag</a> or - <a class="link" href="#def_commit_object">commit object</a>. In contrast to a <a class="link" href="#def_head">head</a>, - a tag is not changed by a <a class="link" href="#def_commit">commit</a>. Tags (not - <a class="link" href="#def_tag_object">tag objects</a>) are stored in <code class="literal">$GIT_DIR/refs/tags/</code>. A - git tag has nothing to do with a Lisp tag (which would be - called an <a class="link" href="#def_object_type">object type</a> in git’s context). A - tag is most typically used to mark a particular point in the - commit ancestry <a class="link" href="#def_chain">chain</a>. + A <a class="link" href="#def_ref">ref</a> under <code class="literal">refs/tags/</code> namespace that points to an + object of an arbitrary type (typically a tag points to either a + <a class="link" href="#def_tag_object">tag</a> or a <a class="link" href="#def_commit_object">commit object</a>). + In contrast to a <a class="link" href="#def_head">head</a>, a tag is not updated by + the <code class="literal">commit</code> command. A git tag has nothing to do with a Lisp + tag (which would be called an <a class="link" href="#def_object_type">object type</a> + in git’s context). A tag is most typically used to mark a particular + point in the commit ancestry <a class="link" href="#def_chain">chain</a>. </dd><dt><span class="term"> <a name="def_tag_object"></a>tag object </span></dt><dd>